package org.zjut.db;

import com.alibaba.fastjson.JSON;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.transaction.annotation.Transactional;
import org.zjut.util.CommonUtil;

import java.util.*;

/**
 * @author Rising
 * @date 2017/8/30
 * @des
 */
public class GeneratorDataBase extends JdbcDaoSupport {
    @Autowired
    AttributeDataBase attributeDataBase;
    @Autowired
    ResourceDataBase resourceDataBase;
    @Autowired
    AccountDataBase accountDataBase;
    @Autowired
    LearnerCourseAttrDataBase learnerCourseAttrDataBase;

    //逻辑改变以下方法不再使用
//    /**
//     * /**
//     * 随机生成学习资源
//     * 普通资源，暂不包括学习概念
//     * @param count
//     * @return
//     * @throws Exception
//     */
//    @Transactional(rollbackFor = java.lang.Exception.class)
//    public Map<String,Object> generateResources(String count) throws Exception {
//        int mCount = -1;
//        Map<String,Object> result = new HashMap<>();
//        try{
//            mCount = Integer.valueOf(count);
//        }catch (Exception e){
//            return CommonUtil.setErrorInfo("请检查参数");
//        }
//        //学习资源属性
//        List<Map<String,Object>> attribute;
//        //先查询学习资源属性
//        Map<String,Object> paramAttr = new HashMap<>();
//        paramAttr.put("attrType",0);
//        Map<String ,Object> attrResult = attributeDataBase.getAtrribute(paramAttr);
//        if(Boolean.valueOf(attrResult.get("success").toString())){
//            attribute = (List<Map<String,Object>>) ((Map<String,Object>)attrResult.get("message")).get("attribute");
//            try{
//
//                for(int i=0;i<mCount;i++){
//
//                    //生成学习资源
//                    String resourceName = "学习资源"+System.currentTimeMillis();
//                    List<Map<String,Object>> attrArray = new ArrayList<>();
//                    for(Map<String,Object> item : attribute){
//                        //获取属性的上下限
//                        Random random = new Random();
//                        int limitL = Integer.valueOf(item.get("limitL").toString());
//                        int limitR = Integer.valueOf(item.get("limitR").toString());
//                        int attrValue = random.nextInt(limitR)%(limitR-limitL+1)+limitL;
//                        int attryType = 0;
//                        String attrCode = item.get("attrCode").toString();
//                        String attrName = item.get("attrName").toString();
//
//                        Map<String,Object> attrValueInfo = new HashMap<>();
//                        attrValueInfo.put("attrCode",attrCode);
//                        attrValueInfo.put("attrName",attrName);
//                        attrValueInfo.put("attrType",attryType);
//                        attrValueInfo.put("attrValue",attrValue);
//                        attrArray.add(attrValueInfo);
//                    }
//                    Map<String,Object> resParams = new HashMap<>();
//                    resParams.put("resourceName",resourceName);
//                    resParams.put("valueInfo",attrArray);
//                    Map<String,Object> resultRes = resourceDataBase.addResource(resParams);
//                    if(!Boolean.valueOf(resultRes.get("success").toString())){
//                        System.out.println("生成属性失败");
//                        throw new Exception();
//                    }
//                }
//                result.put("success",true);
//                result.put("message","生成成功");
//                return result;
//            }catch (Exception e){
//                System.out.println(e.getMessage());
//                throw e;
//            }
//        }else {
//            return CommonUtil.setErrorInfo("获取属性失败");
//        }
//    }
//
//    /**
//     * 随机生成学习者以及对应的属性值
//     * @param count
//     * @return
//     * @throws Exception
//     */
//    @Transactional(rollbackFor = java.lang.Exception.class)
//    public Map<String,Object> GenerateLearner(int count) throws Exception{
//        Map<String,Object> result = new HashMap<>();
//        //学习者属性
//        List<Map<String,Object>> attribute;
//        //先查询学习者属性
//        Map<String,Object> paramAttr = new HashMap<>();
//        paramAttr.put("attrType",1);
//        Map<String ,Object> attrResult = attributeDataBase.getAtrribute(paramAttr);
//        if(Boolean.valueOf(attrResult.get("success").toString())){
//            attribute = (List<Map<String,Object>>) ((Map<String,Object>)attrResult.get("message")).get("attribute");
//            try{
//
//                for(int i=0;i<count;i++){
//
//                    //生成学习者
//                    /**
//                     *
//                     "account":{String},
//                     "password":{String},
//                     "userName":{String},
//                     "userRole":{int},   //0:管理员；1:教师；3:学习者
//                     "userSex":{int},   //0:男，1 女
//                     "userAge":{int}
//                     */
//                    Random random = new Random();
//                    String account = UUID.randomUUID().toString();
//                    String password = UUID.randomUUID().toString();
//                    String userName = "学习者："+System.currentTimeMillis();
//                    String userRole = "3";
//                    String userSex = i%2 == 0 ? "0":"1";
//                    String userAge = random.nextInt(30)%(30-20+1)+20+"";  //20-30岁之间
//
//                    //新增学习者用户
//                    Map<String,Object> userParams = new HashMap<>();
//                    userParams.put("account",account);
//                    userParams.put("password",password);
//                    userParams.put("userName",userName);
//                    userParams.put("userRole",userRole);
//                    userParams.put("userSex",userSex);
//                    userParams.put("userAge",userAge);
//                    Map<String,Object> userResult = accountDataBase.insertUserAccount(userParams);
//                    String newUserCode = null;
//                    if(userResult.get("success").toString().equals("false")){
//                        System.out.print("生成用户失败");
//                        throw new Exception();
//                    }else{
//                        newUserCode = JSON.parseObject(JSON.toJSONString(userResult)).getJSONObject("message").getJSONObject("userInfo").getString("userCode");
//                    }
//                    List<Map<String,Object>> attrArray = new ArrayList<>();
//
//                    for(Map<String,Object> item : attribute){
//                        //获取属性的上下限
//                        Random random1 = new Random();
//                        int limitL = Integer.valueOf(item.get("limitL").toString());
//                        int limitR = Integer.valueOf(item.get("limitR").toString());
//                        int attrValue = random1.nextInt(limitR)%(limitR-limitL+1)+limitL;
//                        int attryType = 0;
//                        String attrCode = item.get("attrCode").toString();
//                        String attrName = item.get("attrName").toString();
//
//                        Map<String,Object> attrValueInfo = new HashMap<>();
//                        attrValueInfo.put("attrCode",attrCode);
//                        attrValueInfo.put("attrName",attrName);
//                        attrValueInfo.put("attrType",attryType);
//                        attrValueInfo.put("attrValue",attrValue);
//                        attrArray.add(attrValueInfo);
//                    }
//                    Map<String,Object> resParams = new HashMap<>();
//                    resParams.put("userCode",newUserCode);
//                    resParams.put("valueInfo",attrArray);
//                    Map<String,Object> resultRes = learnerCourseAttrDataBase.addLeanerAttr(resParams);
//                    if(!Boolean.valueOf(resultRes.get("success").toString())){
//                        System.out.println("设置属性失败");
//                        throw new Exception();
//                    }
//                }
//                result.put("success",true);
//                result.put("message","生成成功");
//                return result;
//            }catch (Exception e){
//                System.out.println(e.getMessage()+"hhhhhhhh");
//                throw e;
//            }
//        }else {
//            return CommonUtil.setErrorInfo("获取属性失败");
//        }
//    }
}
